package com.kl.oauth2.controller;

import com.kl.oauth2.util.URLParamsUtil;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * 使用此类来模拟【第三方软件的首页】
 * 浏览器输入 http://localhost:8080/appIndexServlet
 */
public class AppIndexController {

    //8080:三方软件，8081：授权服务，8081：受保护资源服务 为了演示方便我们将授权服务和受保护资源服务放在同一个服务上面

    String oauthUrl = "http://localhost:8080/oauthServlet?reqType=oauth";
    String redirectUrl = "http://localhost:8080/appServlet";


    /**
     * 从第三方软件首页重定向到授权服务进行授权
     */
    @GetMapping(value = "appIndexServlet")
    public void index(HttpServletResponse response) throws IOException {

        //授权码许可流程，DEMO CODE
        System.out.println("app index ...");

        Map<String, String> params = new HashMap<>();
        params.put("response_type", "code");
        params.put("redirect_uri", redirectUrl);
        params.put("app_id", "APP_ID_RABBIT");
        params.put("scope", "today history");

        // 构造请求授权的URl
        String toOauthUrl = URLParamsUtil.appendParams(oauthUrl, params);

        System.out.println("toOauthUrl: " + toOauthUrl);

        // 授权码流程的【第一次】重定向
        response.sendRedirect(toOauthUrl);
    }
}
